#pragma once

#include <string>
#include <jwt-cpp/jwt.h>
#include <json/value.h>

class [[maybe_unused]] Jwt {
public:
    // 创建一个新的JWT令牌，其中包含一个userId声明
    /**
     * 创建一个新的JWT令牌
     * @param 要加密的json数据
     * @return 生成的jwt token
     */
    [[maybe_unused]] static std::string createToken(const Json::Value &json);

    /**
     * 解码给定的JWT令牌
     * @param token jwt 令牌
     * @return 解析的json数据
     */
    [[maybe_unused]] static Json::Value decodeToken(const std::string &token);

private:
    // 用于签名和验证令牌的密钥
    static const std::string secretKey;
    // 令牌的默认过期时间（以天为单位）
    static const int defaultExpireDays;
    // 发行者
    static const std::string issuer;
    // 令牌类型
    static const std::string type;
};